【Pwn 笔记】跨平台架构的环境配置与调试

捣腾了三天,写了自动化拖 libc 库的脚本,这次算是质量上的更新

安装 qemu 和 gdb-multiarch

安装虚拟环境和调试工具

正常安装这样即可,如果要使用 arm_now 的话,需要 qemu 的版本大于等于 3.0.0,在下方有写安装方法

1
2
sudo apt-get install qemu
sudo apt-get install gdb-multiarch

调试

先使用 qemu 选择共享库文件夹

并设置调试所用的本地端口[不同架构的使用命令可能不一样],例:

1
qemu-arm -L /usr/arm-linux-gnueabihf -g 12345 ./chall

然后进入 gdb-multiarch,输入:

1
2
set architecture [arch]
target remote localhost:[port]

arm_now 安装方法

1.安装 qemu

如果系统内的 qemu 版本小于 3.0.0,首先删除系统内的 qemu,我们要安装 qemu-3.0.0:

1
2
sudo apt-get purge "qemu*"
sudo apt-get autoremove

然后更改/etc/apt/sources.list的内容,启用源代码存储库

之后安装它的构建依赖

1
2
sudo apt-get update
sudo apt-get build-dep qemu
1
2
3
4
5
6
cd ./Downloads
wget https://download.qemu.org/qemu-3.0.0.tar.xz
tar -xf qemu-3.0.0.tar.xz
cd qemu-3.0.0/
./configure
make

然后使用 checkinstall

1
2
3
sudo apt-get install checkinstall
sudo checkinstall make install
sudo apt-get install ./*.deb

这样就安装完了,如果想卸载的话,依旧是输入apt remove qemu

最后禁止系统更新 qemu 到低版本,我们需要禁止更新 qemu

1
echo "qemu hold" | dpkg --set-selections

2.安装 arm_now

项目地址:https://github.com/nongiach/arm_now

照 github 内写的安装即可


安装 mips 相关配置

mipsel 小端序 32 位

1
sudo apt-get install gcc-mipsel-linux-gnu g++-mipsel-linux-gnu libc6-dbg-mipsel-cross

mips 大端序 32 位

1
sudo apt-get install gcc-mips-linux-gnu g++-mips-linux-gnu libc6-dbg-mips-cross

mips64el 小端序 64 位

1
sudo apt-get install gcc-mips64el-linux-gnuabi64 g++-mips64el-linux-gnuabi64 libc6-dbg-mips64el-cross

mips64 大端序 64 位

1
sudo apt-get install gcc-mips64-linux-gnuabi64 g++-mips64-linux-gnuabi64 libc6-dbg-mips64-cross

mipsisa32r6el 小端序 64 位

1
sudo apt-get install binutils-mipsisa32r6el-linux-gnu

mipsisa32r6 大端序 64 位

1
sudo apt-get install binutils-mipsisa32r6-linux-gnu

安装 arm 相关配置

armel 软浮点 小端序 32 位

1
sudo apt-get install gcc-arm-linux-gnueabi g++-arm-linux-gnueabi libc6-dbg-armel-cross

armhf 硬浮点 小端序 32 位

1
sudo apt-get install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf libc6-dbg-armhf-cross

如果提示以下内容,说明没装libc6-armhf-cross

1
/lib/ld-linux-armhf.so.3: No such file or directory

aarch64 小端序 64 位

1
sudo apt-get install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu libc6-dbg-arm64-cross

安装 hppa(PA-RISC) 相关配置

hppa 大端序 32 位

1
sudo apt-get install gcc-hppa-linux-gnu g++-hppa-linux-gnu libc6-dbg-hppa-cross

hppa64 大端序 64 位

这个只有 hppa64 的 gcc

1
sudo apt-get install gcc-hppa64-linux-gnu

安装 m68k 相关配置

m68k 大端序 32 位

1
sudo apt-get install gcc-m68k-linux-gnu g++-m68k-linux-gnu libc6-dbg-m68k-cross

安装 ppc 相关配置

powerpc 大端序 32 位

1
sudo apt-get install gcc-powerpc-linux-gnu g++-powerpc-linux-gnu libc6-dbg-powerpc-cross

powerpcspe 信号处理引擎 大端序 32 位

1
sudo apt-get install gcc-powerpc-linux-gnuspe g++-powerpc-linux-gnuspe libc6-dbg-powerpcspe-cross

powerpc64 大端序 64 位

1
sudo apt-get install gcc-powerpc64-linux-gnu g++-powerpc64-linux-gnu libc6-dbg-ppc64-cross

powerpc64le 小端序 64 位

1
sudo apt-get install gcc-powerpc64le-linux-gnu g++-powerpc64le-linux-gnu libc6-dbg-ppc64el-cross

安装 s390x 相关配置

s390x 大端序 64 位

1
sudo apt-get install gcc-s390x-linux-gnu g++-s390x-linux-gnu libc6-dbg-s390x-cross

安装 sh4 相关配置

sh4 小端序 32 位

1
sudo apt-get install gcc-sh4-linux-gnu g++-sh4-linux-gnu libc6-dbg-sh4-cross

安装 sparc64 相关配置

sparc64 大端序 64 位

1
sudo apt-get install gcc-sparc64-linux-gnu g++-sparc64-linux-gnu libc6-dbg-sparc64-cross

安装 alpha 相关配置

alpha 小端序 64 位

1
sudo apt-get install gcc-alpha-linux-gnu g++-alpha-linux-gnu libc6.1-dbg-alpha-cross

安装 x86_64 相关配置

i686 小端序 32 位

i686 只是 i386 的一个子集,支持的 cpu 从 Pentium 2(686) 开始,之前的型号不支持.

1
sudo apt-get install gcc-i686-linux-gnu gcc-i686-linux-gnu libc6-dbg-i386-cross

x86_64x32 小端序 32 位

这个是 64 位机器装 32 位的编译工具,应该有反过来的,但是我不用纯 32 位机器就不折腾了

1
sudo apt-get install gcc-x86-64-linux-gnux32 g++-x86-64-linux-gnux32 libc6-dbg-x32-cross

安装 riscv64 相关配置

riscv64 小端序 64 位

1
sudo apt-get install gcc-riscv64-linux-gnu g++-riscv64-linux-gnu libc6-dbg-riscv64-cross

安装 ia64 相关配置

ia64 小端序 64 位

只有类似 readelf 和 objdump 这种工具可以用,莫得 libc 和 gcc 以及 g++

1
sudo apt-get install binutils-ia64-linux-gnu

整合

Ubuntu 16.04 下缺少一些包,在 Ubuntu 16.04 下安装这些即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
sudo apt-get install gcc-mipsel-linux-gnu g++-mipsel-linux-gnu libc6-dbg-mipsel-cross \
gcc-mips-linux-gnu g++-mips-linux-gnu libc6-dbg-mips-cross \
gcc-mips64el-linux-gnuabi64 g++-mips64el-linux-gnuabi64 libc6-dbg-mips64el-cross \
gcc-mips64-linux-gnuabi64 g++-mips64-linux-gnuabi64 libc6-dbg-mips64-cross \
gcc-arm-linux-gnueabi g++-arm-linux-gnueabi libc6-dbg-armel-cross \
gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf libc6-dbg-armhf-cross \
gcc-aarch64-linux-gnu g++-aarch64-linux-gnu libc6-dbg-arm64-cross \
gcc-hppa-linux-gnu g++-hppa-linux-gnu libc6-dbg-hppa-cross \
gcc-hppa64-linux-gnu \
gcc-m68k-linux-gnu g++-m68k-linux-gnu libc6-dbg-m68k-cross \
gcc-powerpc-linux-gnu g++-powerpc-linux-gnu libc6-dbg-powerpc-cross \
gcc-powerpc-linux-gnuspe g++-powerpc-linux-gnuspe libc6-dbg-powerpcspe-cross \
gcc-powerpc64-linux-gnu g++-powerpc64-linux-gnu libc6-dbg-ppc64-cross \
gcc-powerpc64le-linux-gnu g++-powerpc64le-linux-gnu libc6-dbg-ppc64el-cross \
gcc-s390x-linux-gnu g++-s390x-linux-gnu libc6-dbg-s390x-cross \
gcc-sh4-linux-gnu g++-sh4-linux-gnu libc6-dbg-sh4-cross \
gcc-sparc64-linux-gnu g++-sparc64-linux-gnu libc6-dbg-sparc64-cross \
gcc-alpha-linux-gnu g++-alpha-linux-gnu libc6.1-dbg-alpha-cross

在 Ubuntu 18.04 下,能多安装这些:

1
2
3
4
5
6
sudo apt-get install gcc-x86-64-linux-gnux32 g++-x86-64-linux-gnux32 libc6-dbg-x32-cross \
gcc-i686-linux-gnu gcc-i686-linux-gnu libc6-dbg-i386-cross \
gcc-riscv64-linux-gnu g++-riscv64-linux-gnu libc6-dbg-riscv64-cross \
binutils-ia64-linux-gnu \
binutils-mipsisa32r6el-linux-gnu \
binutils-mipsisa32r6-linux-gnu

libc 名称对应版本小记录

1
2
3
4
5
mips mips-32-big
mips32-mips64 mips-32-big
mips32-mips64el mips-32-little
mips32-mips64r6 mips64-64-big
mips32-mips64r6el mips64-64-little
文章目录
  1. 1. 安装 qemu 和 gdb-multiarch
    1. 1.1. 安装虚拟环境和调试工具
    2. 1.2. 调试
    3. 1.3. arm_now 安装方法
  2. 2. 安装 mips 相关配置
    1. 2.1. mipsel 小端序 32 位
    2. 2.2. mips 大端序 32 位
    3. 2.3. mips64el 小端序 64 位
    4. 2.4. mips64 大端序 64 位
    5. 2.5. mipsisa32r6el 小端序 64 位
    6. 2.6. mipsisa32r6 大端序 64 位
  3. 3. 安装 arm 相关配置
    1. 3.1. armel 软浮点 小端序 32 位
    2. 3.2. armhf 硬浮点 小端序 32 位
    3. 3.3. aarch64 小端序 64 位
  4. 4. 安装 hppa(PA-RISC) 相关配置
    1. 4.1. hppa 大端序 32 位
    2. 4.2. hppa64 大端序 64 位
  5. 5. 安装 m68k 相关配置
    1. 5.1. m68k 大端序 32 位
  6. 6. 安装 ppc 相关配置
    1. 6.1. powerpc 大端序 32 位
    2. 6.2. powerpcspe 信号处理引擎 大端序 32 位
    3. 6.3. powerpc64 大端序 64 位
    4. 6.4. powerpc64le 小端序 64 位
  7. 7. 安装 s390x 相关配置
    1. 7.1. s390x 大端序 64 位
  8. 8. 安装 sh4 相关配置
    1. 8.1. sh4 小端序 32 位
  9. 9. 安装 sparc64 相关配置
    1. 9.1. sparc64 大端序 64 位
  10. 10. 安装 alpha 相关配置
    1. 10.1. alpha 小端序 64 位
  11. 11. 安装 x86_64 相关配置
    1. 11.1. i686 小端序 32 位
    2. 11.2. x86_64x32 小端序 32 位
  12. 12. 安装 riscv64 相关配置
    1. 12.1. riscv64 小端序 64 位
  13. 13. 安装 ia64 相关配置
    1. 13.1. ia64 小端序 64 位
  14. 14. 整合
  15. 15. libc 名称对应版本小记录
|